package com.dl698.opt;

import java.util.List;

/**
 * DataOption类
 * 包含所有数据选项的内部类
 * 
 * @author wind
 * @version 1.1.1
 */
public class DataOption {

    // Selector1Option对应类
    public static class Selector1Option {
        public String oad;
        public DataOpt data;
    }

    // Selector2Option对应类
    public static class Selector2Option {
        public String oad;
        public DataOpt sData;
        public DataOpt eData;
        public DataOpt tData;
    }

    // Selector3Option对应类
    public static class Selector3Option {
        public List<Selector2Option> seqOfSelector2;
    }

    // Selector4Option对应类
    public static class Selector4Option {
        public String time;
        public MSOption ms;
    }

    // Selector5Option对应类
    public static class Selector5Option {
        public String time;
        public MSOption ms;
    }

    // Selector6Option对应类
    public static class Selector6Option {
        public String sTime;
        public String eTime;
        public TIOption ti;
        public MSOption ms;
    }

    // Selector7Option对应类
    public static class Selector7Option {
        public String sTime;
        public String eTime;
        public TIOption ti;
        public MSOption ms;
    }

    // Selector8Option对应类
    public static class Selector8Option {
        public String sTime;
        public String eTime;
        public TIOption ti;
        public MSOption ms;
    }

    // Selector9Option对应类
    public static class Selector9Option {
        public int index;
    }

    // Selector10Option对应类
    public static class Selector10Option {
        public int index;
        public MSOption ms;
    }

    // TIOption对应类
    public static class TIOption {
        public String unit;
        public String interval;
    }

    // RegionOption对应类
    public static class RegionOption {
        public int index;
        public DataOpt sData;
        public DataOpt eData;
    }

    // MSOption对应类
    public static class MSOption {
        public int index;
        public List<Integer> typeGroup;
        public List<String> addGroup;
        public List<Integer> serGroup;
        public List<RegionOption> typeGroupSect;
        public List<RegionOption> addGroupSect;
        public List<RegionOption> serGroupSect;
    }

    // ROADOption对应类
    public static class ROADOption {
        public String oad;
        public List<String> seqOfOad;
    }

    // RCSDOption对应类
    public static class RCSDOption {
        public List<CSDOption> seqOfCsd;
    }

    // RSDOption对应类
    public static class RSDOption {
        public int index;
        public Selector1Option selector1;
        public Selector2Option selector2;
        public Selector3Option selector3;
        public Selector4Option selector4;
        public Selector5Option selector5;
        public Selector6Option selector6;
        public Selector7Option selector7;
        public Selector8Option selector8;
        public Selector9Option selector9;
        public Selector10Option selector10;
    }

    // CSDOption对应类
    public static class CSDOption {
        public int index;
        public String oad;
        public ROADOption road;
    }

    // SIDOption对应类
    public static class SIDOption {
        public String sid;
        public String attachData;
    }

    // SIDMACOption对应类
    public static class SIDMACOption {
        public String sid;
        public String attachData;
        public String mac;
    }

    // RNOption对应类
    public static class RNOption {
        public String oct;
    }

    // COMMDCBOption对应类
    public static class COMMDCBOption {
        public String bondRate;
        public String checkBits;
        public String dataBits;
        public String stopBits;
        public String flowControl;
    }

    // ScalerUnitOption对应类
    public static class ScalerUnitOption {
        public String scaler;
        public String unit;
    }

    // DataOpt对应类
    public static class DataOpt {
        public int dataIndex;
        public List<DataOpt> array;
        public List<DataOpt> structure;
        public String bool;
        public String bit_string;
        public String double_long;
        public String double_long_unsigned;
        public String octet_string;
        public String visible_string;
        public String utf8_string;
        public String integer;
        public String long_key; // 对应TypeScript中的long
        public String unsigned;
        public String long_unsigned;
        public String long64;
        public String long64_unsigned;
        public String enum_key; // 对应TypeScript中的enum
        public String float32;
        public String float64;
        public String date_time;
        public String date;
        public String time;
        public String date_time_s;
        public String oi;
        public String oad;
        public ROADOption road;
        public String omd;
        public TIOption ti;
        public String tsa;
        public String mac;
        public RNOption rn;
        public RegionOption region;
        public ScalerUnitOption scaler_unit;
        public RSDOption rsd;
        public CSDOption csd;
        public MSOption ms;
        public SIDOption sid;
        public SIDMACOption sid_mac;
        public COMMDCBOption comdcb;
        public RCSDOption rcsd;
    }
}